#!/usr/bin/perl
#
#    notify_osd: perform some string manipulation on notify-osd messages
#                 and then send to the screen message window
#    Copyright (C) 2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@byobu.co>
#             with help from Mathias Gug <mathias.gug@canonical.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

$/ = "\n\n";
$PKG = "byobu";
$sleep = 5;
while (<STDIN>) {
	# Ensure that the notify_osd indicator is enabled
	my $skip = 0;
	open(F, "<$ENV{BYOBU_CONFIG_DIR}/status");
	foreach my $i (<F>) {
		if ($i =~ /notify_osd=0/) {
			$skip = 1;
		}
	}
	close(F);
	if ($skip == 1) {
		next;
	}
	$msg = $_;
	$msg =~ s/\[[^,]*, //;		# strip the leading "[timestamp, "
	$msg =~ s/\] /: /;		# replace the " ] " following the indicator name, with ":"
	$msg =~ s/\s+/ /g;		# collapse multi-whitespace into one
	$msg =~ s/\s+$//g;		# strip trailing whitespace
	$msg =~ s/^\s+//g;		# strip leading whitespace
	system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "msgwait", "$sleep");
	system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "echo", "[$msg]");
	sleep($sleep);
	system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "msgwait", "0");
}
